import 'safe_value_notifier.dart';

/// 泛型数组监听
/// https://blog.csdn.net/jdsjlzx/article/details/125466081
class SafeValueNotifierList<T> extends SafeValueNotifier<List<T>> {
  SafeValueNotifierList(super.initValue);

  void add(T item) {
    value.add(item);
    _copyValue();
  }

  void addAll(List<T> items) {
    value.addAll(items);
    _copyValue();
  }

  /// 删除
  void remove(int index) {
    if (value.length < index) {
      return;
    }
    value.removeAt(index);
    _copyValue();
  }

  /// 删除最后
  void removeLast() {
    if (value.isEmpty) {
      return;
    }
    value.removeLast();
    _copyValue();
  }

  void removeAll() {
    value.clear();
    _copyValue();
  }

  /// 利用深copy 重新赋值,触发监听
  void _copyValue() {
    value = [...value];
  }
}
